Loading...
Loading...
Loading...

目录


48. 旋转图像

计算机编程 发布于:2022/3/24/16:03 884 vk python 数据结构与算法 矩阵 最近编辑于2 年,9 月前 预计阅读时长:2min

本题来自力扣48. 旋转图像。难度:中等

 

题目要求把矩阵顺时针旋转90°。可以直接上手硬来,但是我捣鼓了好久不知道怎么弄,那么这时候想象一下之前遇到难题怎么办?把难题转换成已经见过的题然后解决。乘法不会做了可以把它转换成一堆加法,复杂吗?复杂!但是又不是自己算,是计算机算,所以也就不那么复杂了。

同理,顺时针旋转90°了不会做了想想看有没有什么相对简单的方法可以有相同的功效。

矩阵[1,2,3]顺时针旋转90°只需沿红线对称下来即可

 

矩阵[[1,2,3],[4,5,6]]除了沿红线对称还需要左右对称

[1,2,3]不需要左右对称是因为相当于它和它自己对称了

所以推出规律

顺时针旋转90°=沿(左上到右下)对角线对称+左右对称

那么,逆时针90°呢?

自然就是逆时针旋转90°=沿(右上到左下)对角线对称+左右对称

拿3x3的矩阵验证一下

验证成功

代码时刻

    def rotate(self, matrix: List[List[int]]) -> None:
      	#对角线对称
        for i in range(len(matrix)):
            for j in range(i):
                matrix[i][j], matrix[j][i]=matrix[j][i],matrix[i][j]
        #左右对称
        for i in matrix:
            """
            i.reverse()
            """
            for j in range(len(i)//2):
                i[j],i[len(i)-j-1]=i[len(i)-j-1],i[j]

至于为什么这么for循环,我相信多看几遍就能明白,我解释了一遍用到了特殊字符和表情,但是它老是出错发不出来,数据库编码有点问题以后再改网站的这个bug吧。

可以想象有两个三角形,1和2它们对应的位置需要交换值,而对称轴上的值不动

如果实在想不明白,文章底下评论即可

单词数:64字符数:890

共有0条评论